#include "clientOperacion.h"
#include "clientParser.h"
#include "commonConfig.h"

Operacion::Operacion() {
	id = 0;
	codigoOperacion = '0';
}

Operacion::~Operacion() {
}


std::string Operacion::getClave() const {
    return clave;
}

int Operacion::getId() const {
    return id;
}

char Operacion::getCodigoOperacion() const {
    return codigoOperacion;
}

std::string Operacion::getValor() const {
    return valor;
}

void Operacion::setClave(std::string& clave) {
    this->clave = clave;
}

void Operacion::setId(int id) {
    this->id = id;
}

void Operacion::setCodigoOperacion(char operacion) {
    this->codigoOperacion = operacion;
}

void Operacion::setValor(std::string& valor) {
    this->valor = valor;
}

/* Lee una linea del archivo  y crea la operacion correspondiente. */

std::istream& operator >>(std::istream &stream, Operacion &operacion) {
	std::string linea;
	getline(stream, linea);
	Parser::crearOperacion(linea, operacion);
	return stream;
}

bool Operacion::valida() {
	return ((codigoOperacion == OPERACION_CONSULTAR) ||
			(codigoOperacion == OPERACION_ELIMINAR) ||
			(codigoOperacion == OPERACION_INSERTAR));
}

std::string Operacion::toString() {
	std::string concatenacion;

	concatenacion += this->codigoOperacion;
	concatenacion += " ";
	concatenacion += this->clave;

	if (valor.size() > 0) {
		concatenacion += " ";
		concatenacion += this->valor;
	}
	return concatenacion;
}
